home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / swing / JTabbedPane.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  13.8 KB  |  828 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Rectangle;
  6. import java.awt.event.MouseEvent;
  7. import java.io.IOException;
  8. import java.io.ObjectInputStream;
  9. import java.io.ObjectOutputStream;
  10. import java.io.Serializable;
  11. import java.util.Vector;
  12. import javax.accessibility.Accessible;
  13. import javax.accessibility.AccessibleContext;
  14. import javax.accessibility.AccessibleState;
  15. import javax.swing.event.ChangeEvent;
  16. import javax.swing.event.ChangeListener;
  17. import javax.swing.plaf.TabbedPaneUI;
  18. import javax.swing.plaf.UIResource;
  19. import sun.swing.SwingUtilities2;
  20.  
  21. public class JTabbedPane extends JComponent implements Serializable, Accessible, SwingConstants {
  22.    public static final int WRAP_TAB_LAYOUT = 0;
  23.    public static final int SCROLL_TAB_LAYOUT = 1;
  24.    private static final String uiClassID = "TabbedPaneUI";
  25.    protected int tabPlacement;
  26.    private int tabLayoutPolicy;
  27.    protected SingleSelectionModel model;
  28.    private boolean haveRegistered;
  29.    protected ChangeListener changeListener;
  30.    Vector pages;
  31.    private Component visComp;
  32.    protected transient ChangeEvent changeEvent;
  33.  
  34.    public JTabbedPane() {
  35.       this(1, 0);
  36.    }
  37.  
  38.    public JTabbedPane(int var1) {
  39.       this(var1, 0);
  40.    }
  41.  
  42.    public JTabbedPane(int var1, int var2) {
  43.       this.tabPlacement = 1;
  44.       this.changeListener = null;
  45.       this.visComp = null;
  46.       this.changeEvent = null;
  47.       this.setTabPlacement(var1);
  48.       this.setTabLayoutPolicy(var2);
  49.       this.pages = new Vector(1);
  50.       this.setModel(new DefaultSingleSelectionModel());
  51.       this.updateUI();
  52.    }
  53.  
  54.    public TabbedPaneUI getUI() {
  55.       return (TabbedPaneUI)this.ui;
  56.    }
  57.  
  58.    public void setUI(TabbedPaneUI var1) {
  59.       super.setUI(var1);
  60.  
  61.       for(int var2 = 0; var2 < this.getTabCount(); ++var2) {
  62.          Icon var3 = ((Page)this.pages.elementAt(var2)).disabledIcon;
  63.          if (var3 instanceof UIResource) {
  64.             this.setDisabledIconAt(var2, (Icon)null);
  65.          }
  66.       }
  67.  
  68.    }
  69.  
  70.    public void updateUI() {
  71.       this.setUI((TabbedPaneUI)UIManager.getUI(this));
  72.    }
  73.  
  74.    public String getUIClassID() {
  75.       return "TabbedPaneUI";
  76.    }
  77.  
  78.    protected ChangeListener createChangeListener() {
  79.       return new ModelListener(this);
  80.    }
  81.  
  82.    public void addChangeListener(ChangeListener var1) {
  83.       this.listenerList.add(ChangeListener.class, var1);
  84.    }
  85.  
  86.    public void removeChangeListener(ChangeListener var1) {
  87.       this.listenerList.remove(ChangeListener.class, var1);
  88.    }
  89.  
  90.    public ChangeListener[] getChangeListeners() {
  91.       return (ChangeListener[])this.listenerList.getListeners(ChangeListener.class);
  92.    }
  93.  
  94.    protected void fireStateChanged() {
  95.       int var1 = this.getSelectedIndex();
  96.       if (var1 < 0) {
  97.          if (this.visComp != null && this.visComp.isVisible()) {
  98.             this.visComp.setVisible(false);
  99.          }
  100.  
  101.          this.visComp = null;
  102.       } else {
  103.          Component var2 = this.getComponentAt(var1);
  104.          if (var2 != null && var2 != this.visComp) {
  105.             boolean var3 = false;
  106.             if (this.visComp != null) {
  107.                var3 = SwingUtilities.findFocusOwner(this.visComp) != null;
  108.                if (this.visComp.isVisible()) {
  109.                   this.visComp.setVisible(false);
  110.                }
  111.             }
  112.  
  113.             if (!var2.isVisible()) {
  114.                var2.setVisible(true);
  115.             }
  116.  
  117.             if (var3) {
  118.                SwingUtilities2.tabbedPaneChangeFocusTo(var2);
  119.             }
  120.  
  121.             this.visComp = var2;
  122.          }
  123.       }
  124.  
  125.       Object[] var4 = this.listenerList.getListenerList();
  126.  
  127.       for(int var5 = var4.length - 2; var5 >= 0; var5 -= 2) {
  128.          if (var4[var5] == ChangeListener.class) {
  129.             if (this.changeEvent == null) {
  130.                this.changeEvent = new ChangeEvent(this);
  131.             }
  132.  
  133.             ((ChangeListener)var4[var5 + 1]).stateChanged(this.changeEvent);
  134.          }
  135.       }
  136.  
  137.    }
  138.  
  139.    public SingleSelectionModel getModel() {
  140.       return this.model;
  141.    }
  142.  
  143.    public void setModel(SingleSelectionModel var1) {
  144.       SingleSelectionModel var2 = this.getModel();
  145.       if (var2 != null) {
  146.          var2.removeChangeListener(this.changeListener);
  147.          this.changeListener = null;
  148.       }
  149.  
  150.       this.model = var1;
  151.       if (var1 != null) {
  152.          this.changeListener = this.createChangeListener();
  153.          var1.addChangeListener(this.changeListener);
  154.       }
  155.  
  156.       this.firePropertyChange("model", var2, var1);
  157.       this.repaint();
  158.    }
  159.  
  160.    public int getTabPlacement() {
  161.       return this.tabPlacement;
  162.    }
  163.  
  164.    public void setTabPlacement(int var1) {
  165.       if (var1 != 1 && var1 != 2 && var1 != 3 && var1 != 4) {
  166.          throw new IllegalArgumentException("illegal tab placement: must be TOP, BOTTOM, LEFT, or RIGHT");
  167.       } else {
  168.          if (this.tabPlacement != var1) {
  169.             int var2 = this.tabPlacement;
  170.             this.tabPlacement = var1;
  171.             this.firePropertyChange("tabPlacement", var2, var1);
  172.             this.revalidate();
  173.             this.repaint();
  174.          }
  175.  
  176.       }
  177.    }
  178.  
  179.    public int getTabLayoutPolicy() {
  180.       return this.tabLayoutPolicy;
  181.    }
  182.  
  183.    public void setTabLayoutPolicy(int var1) {
  184.       if (var1 != 0 && var1 != 1) {
  185.          throw new IllegalArgumentException("illegal tab layout policy: must be WRAP_TAB_LAYOUT or SCROLL_TAB_LAYOUT");
  186.       } else {
  187.          if (this.tabLayoutPolicy != var1) {
  188.             int var2 = this.tabLayoutPolicy;
  189.             this.tabLayoutPolicy = var1;
  190.             this.firePropertyChange("tabLayoutPolicy", var2, var1);
  191.             this.revalidate();
  192.             this.repaint();
  193.          }
  194.  
  195.       }
  196.    }
  197.  
  198.    public int getSelectedIndex() {
  199.       return this.model.getSelectedIndex();
  200.    }
  201.  
  202.    public void setSelectedIndex(int var1) {
  203.       if (var1 != -1) {
  204.          this.checkIndex(var1);
  205.       }
  206.  
  207.       this.setSelectedIndexImpl(var1, true);
  208.    }
  209.  
  210.    private void setSelectedIndexImpl(int var1, boolean var2) {
  211.       int var3 = this.model.getSelectedIndex();
  212.       Page var4 = null;
  213.       Page var5 = null;
  214.       String var6 = null;
  215.       var2 = var2 && var3 != var1;
  216.       if (var2) {
  217.          if (this.accessibleContext != null) {
  218.             var6 = this.accessibleContext.getAccessibleName();
  219.          }
  220.  
  221.          if (var3 >= 0) {
  222.             var4 = (Page)this.pages.elementAt(var3);
  223.          }
  224.  
  225.          if (var1 >= 0) {
  226.             var5 = (Page)this.pages.elementAt(var1);
  227.          }
  228.       }
  229.  
  230.       this.model.setSelectedIndex(var1);
  231.       if (var2) {
  232.          this.changeAccessibleSelection(var4, var6, var5);
  233.       }
  234.  
  235.    }
  236.  
  237.    private void changeAccessibleSelection(Page var1, String var2, Page var3) {
  238.       if (this.accessibleContext != null) {
  239.          if (var1 != null) {
  240.             var1.firePropertyChange("AccessibleState", AccessibleState.SELECTED, (Object)null);
  241.          }
  242.  
  243.          if (var3 != null) {
  244.             var3.firePropertyChange("AccessibleState", (Object)null, AccessibleState.SELECTED);
  245.          }
  246.  
  247.          this.accessibleContext.firePropertyChange("AccessibleName", var2, this.accessibleContext.getAccessibleName());
  248.       }
  249.    }
  250.  
  251.    public Component getSelectedComponent() {
  252.       int var1 = this.getSelectedIndex();
  253.       return var1 == -1 ? null : this.getComponentAt(var1);
  254.    }
  255.  
  256.    public void setSelectedComponent(Component var1) {
  257.       int var2 = this.indexOfComponent(var1);
  258.       if (var2 != -1) {
  259.          this.setSelectedIndex(var2);
  260.       } else {
  261.          throw new IllegalArgumentException("component not found in tabbed pane");
  262.       }
  263.    }
  264.  
  265.    public void insertTab(String var1, Icon var2, Component var3, String var4, int var5) {
  266.       int var6 = var5;
  267.       int var7 = this.indexOfComponent(var3);
  268.       if (var3 != null && var7 != -1) {
  269.          this.removeTabAt(var7);
  270.          if (var5 > var7) {
  271.             var6 = var5 - 1;
  272.          }
  273.       }
  274.  
  275.       int var8 = this.getSelectedIndex();
  276.       this.pages.insertElementAt(new Page(this, this, var1 != null ? var1 : "", var2, (Icon)null, var3, var4), var6);
  277.       if (var3 != null) {
  278.          this.addImpl(var3, (Object)null, -1);
  279.          var3.setVisible(false);
  280.       }
  281.  
  282.       if (this.pages.size() == 1) {
  283.          this.setSelectedIndex(0);
  284.       }
  285.  
  286.       if (var8 >= var6) {
  287.          this.setSelectedIndexImpl(var8 + 1, false);
  288.       }
  289.  
  290.       if (!this.haveRegistered && var4 != null) {
  291.          ToolTipManager.sharedInstance().registerComponent(this);
  292.          this.haveRegistered = true;
  293.       }
  294.  
  295.       if (this.accessibleContext != null) {
  296.          this.accessibleContext.firePropertyChange("AccessibleVisibleData", (Object)null, var3);
  297.       }
  298.  
  299.       this.revalidate();
  300.       this.repaint();
  301.    }
  302.  
  303.    public void addTab(String var1, Icon var2, Component var3, String var4) {
  304.       this.insertTab(var1, var2, var3, var4, this.pages.size());
  305.    }
  306.  
  307.    public void addTab(String var1, Icon var2, Component var3) {
  308.       this.insertTab(var1, var2, var3, (String)null, this.pages.size());
  309.    }
  310.  
  311.    public void addTab(String var1, Component var2) {
  312.       this.insertTab(var1, (Icon)null, var2, (String)null, this.pages.size());
  313.    }
  314.  
  315.    public Component add(Component var1) {
  316.       if (!(var1 instanceof UIResource)) {
  317.          this.addTab(var1.getName(), var1);
  318.       } else {
  319.          super.add(var1);
  320.       }
  321.  
  322.       return var1;
  323.    }
  324.  
  325.    public Component add(String var1, Component var2) {
  326.       if (!(var2 instanceof UIResource)) {
  327.          this.addTab(var1, var2);
  328.       } else {
  329.          super.add(var1, var2);
  330.       }
  331.  
  332.       return var2;
  333.    }
  334.  
  335.    public Component add(Component var1, int var2) {
  336.       if (!(var1 instanceof UIResource)) {
  337.          this.insertTab(var1.getName(), (Icon)null, var1, (String)null, var2 == -1 ? this.getTabCount() : var2);
  338.       } else {
  339.          super.add(var1, var2);
  340.       }
  341.  
  342.       return var1;
  343.    }
  344.  
  345.    public void add(Component var1, Object var2) {
  346.       if (!(var1 instanceof UIResource)) {
  347.          if (var2 instanceof String) {
  348.             this.addTab((String)var2, var1);
  349.          } else if (var2 instanceof Icon) {
  350.             this.addTab((String)null, (Icon)var2, var1);
  351.          } else {
  352.             this.add(var1);
  353.          }
  354.       } else {
  355.          super.add(var1, var2);
  356.       }
  357.  
  358.    }
  359.  
  360.    public void add(Component var1, Object var2, int var3) {
  361.       if (!(var1 instanceof UIResource)) {
  362.          Icon var4 = var2 instanceof Icon ? (Icon)var2 : null;
  363.          String var5 = var2 instanceof String ? (String)var2 : null;
  364.          this.insertTab(var5, var4, var1, (String)null, var3 == -1 ? this.getTabCount() : var3);
  365.       } else {
  366.          super.add(var1, var2, var3);
  367.       }
  368.  
  369.    }
  370.  
  371.    public void removeTabAt(int var1) {
  372.       this.checkIndex(var1);
  373.       Component var2 = this.getComponentAt(var1);
  374.       boolean var3 = false;
  375.       int var4 = this.getSelectedIndex();
  376.       String var5 = null;
  377.       if (var2 == this.visComp) {
  378.          var3 = SwingUtilities.findFocusOwner(this.visComp) != null;
  379.          this.visComp = null;
  380.       }
  381.  
  382.       if (this.accessibleContext != null) {
  383.          if (var1 == var4) {
  384.             ((Page)this.pages.elementAt(var1)).firePropertyChange("AccessibleState", AccessibleState.SELECTED, (Object)null);
  385.             var5 = this.accessibleContext.getAccessibleName();
  386.          }
  387.  
  388.          this.accessibleContext.firePropertyChange("AccessibleVisibleData", var2, (Object)null);
  389.       }
  390.  
  391.       this.setTabComponentAt(var1, (Component)null);
  392.       this.pages.removeElementAt(var1);
  393.       this.putClientProperty("__index_to_remove__", new Integer(var1));
  394.       if (var4 > var1) {
  395.          this.setSelectedIndexImpl(var4 - 1, false);
  396.       } else if (var4 >= this.getTabCount()) {
  397.          this.setSelectedIndexImpl(var4 - 1, false);
  398.          Page var6 = var4 != 0 ? (Page)this.pages.elementAt(var4 - 1) : null;
  399.          this.changeAccessibleSelection((Page)null, var5, var6);
  400.       } else if (var1 == var4) {
  401.          this.fireStateChanged();
  402.          this.changeAccessibleSelection((Page)null, var5, (Page)this.pages.elementAt(var1));
  403.       }
  404.  
  405.       if (var2 != null) {
  406.          Component[] var8 = this.getComponents();
  407.          int var7 = var8.length;
  408.  
  409.          while(true) {
  410.             --var7;
  411.             if (var7 < 0) {
  412.                break;
  413.             }
  414.  
  415.             if (var8[var7] == var2) {
  416.                super.remove(var7);
  417.                var2.setVisible(true);
  418.                break;
  419.             }
  420.          }
  421.       }
  422.  
  423.       if (var3) {
  424.          SwingUtilities2.tabbedPaneChangeFocusTo(this.getSelectedComponent());
  425.       }
  426.  
  427.       this.revalidate();
  428.       this.repaint();
  429.    }
  430.  
  431.    public void remove(Component var1) {
  432.       int var2 = this.indexOfComponent(var1);
  433.       if (var2 != -1) {
  434.          this.removeTabAt(var2);
  435.       } else {
  436.          Component[] var3 = this.getComponents();
  437.  
  438.          for(int var4 = 0; var4 < var3.length; ++var4) {
  439.             if (var1 == var3[var4]) {
  440.                super.remove(var4);
  441.                break;
  442.             }
  443.          }
  444.       }
  445.  
  446.    }
  447.  
  448.    public void remove(int var1) {
  449.       this.removeTabAt(var1);
  450.    }
  451.  
  452.    public void removeAll() {
  453.       this.setSelectedIndexImpl(-1, true);
  454.       int var1 = this.getTabCount();
  455.  
  456.       while(var1-- > 0) {
  457.          this.removeTabAt(var1);
  458.       }
  459.  
  460.    }
  461.  
  462.    public int getTabCount() {
  463.       return this.pages.size();
  464.    }
  465.  
  466.    public int getTabRunCount() {
  467.       return this.ui != null ? ((TabbedPaneUI)this.ui).getTabRunCount(this) : 0;
  468.    }
  469.  
  470.    public String getTitleAt(int var1) {
  471.       return ((Page)this.pages.elementAt(var1)).title;
  472.    }
  473.  
  474.    public Icon getIconAt(int var1) {
  475.       return ((Page)this.pages.elementAt(var1)).icon;
  476.    }
  477.  
  478.    public Icon getDisabledIconAt(int var1) {
  479.       Page var2 = (Page)this.pages.elementAt(var1);
  480.       if (var2.disabledIcon == null) {
  481.          var2.disabledIcon = UIManager.getLookAndFeel().getDisabledIcon(this, var2.icon);
  482.       }
  483.  
  484.       return var2.disabledIcon;
  485.    }
  486.  
  487.    public String getToolTipTextAt(int var1) {
  488.       return ((Page)this.pages.elementAt(var1)).tip;
  489.    }
  490.  
  491.    public Color getBackgroundAt(int var1) {
  492.       return ((Page)this.pages.elementAt(var1)).getBackground();
  493.    }
  494.  
  495.    public Color getForegroundAt(int var1) {
  496.       return ((Page)this.pages.elementAt(var1)).getForeground();
  497.    }
  498.  
  499.    public boolean isEnabledAt(int var1) {
  500.       return ((Page)this.pages.elementAt(var1)).isEnabled();
  501.    }
  502.  
  503.    public Component getComponentAt(int var1) {
  504.       return ((Page)this.pages.elementAt(var1)).component;
  505.    }
  506.  
  507.    public int getMnemonicAt(int var1) {
  508.       this.checkIndex(var1);
  509.       Page var2 = (Page)this.pages.elementAt(var1);
  510.       return var2.getMnemonic();
  511.    }
  512.  
  513.    public int getDisplayedMnemonicIndexAt(int var1) {
  514.       this.checkIndex(var1);
  515.       Page var2 = (Page)this.pages.elementAt(var1);
  516.       return var2.getDisplayedMnemonicIndex();
  517.    }
  518.  
  519.    public Rectangle getBoundsAt(int var1) {
  520.       this.checkIndex(var1);
  521.       return this.ui != null ? ((TabbedPaneUI)this.ui).getTabBounds(this, var1) : null;
  522.    }
  523.  
  524.    public void setTitleAt(int var1, String var2) {
  525.       Page var3 = (Page)this.pages.elementAt(var1);
  526.       String var4 = var3.title;
  527.       var3.title = var2;
  528.       if (var4 != var2) {
  529.          this.firePropertyChange("indexForTitle", -1, var1);
  530.       }
  531.  
  532.       var3.updateDisplayedMnemonicIndex();
  533.       if (var4 != var2 && this.accessibleContext != null) {
  534.          this.accessibleContext.firePropertyChange("AccessibleVisibleData", var4, var2);
  535.       }
  536.  
  537.       if (var2 == null || var4 == null || !var2.equals(var4)) {
  538.          this.revalidate();
  539.          this.repaint();
  540.       }
  541.  
  542.    }
  543.  
  544.    public void setIconAt(int var1, Icon var2) {
  545.       Page var3 = (Page)this.pages.elementAt(var1);
  546.       Icon var4 = var3.icon;
  547.       if (var2 != var4) {
  548.          var3.icon = var2;
  549.          if (var3.disabledIcon instanceof UIResource) {
  550.             var3.disabledIcon = null;
  551.          }
  552.  
  553.          if (this.accessibleContext != null) {
  554.             this.accessibleContext.firePropertyChange("AccessibleVisibleData", var4, var2);
  555.          }
  556.  
  557.          this.revalidate();
  558.          this.repaint();
  559.       }
  560.  
  561.    }
  562.  
  563.    public void setDisabledIconAt(int var1, Icon var2) {
  564.       Icon var3 = ((Page)this.pages.elementAt(var1)).disabledIcon;
  565.       ((Page)this.pages.elementAt(var1)).disabledIcon = var2;
  566.       if (var2 != var3 && !this.isEnabledAt(var1)) {
  567.          this.revalidate();
  568.          this.repaint();
  569.       }
  570.  
  571.    }
  572.  
  573.    public void setToolTipTextAt(int var1, String var2) {
  574.       String var3 = ((Page)this.pages.elementAt(var1)).tip;
  575.       ((Page)this.pages.elementAt(var1)).tip = var2;
  576.       if (var3 != var2 && this.accessibleContext != null) {
  577.          this.accessibleContext.firePropertyChange("AccessibleVisibleData", var3, var2);
  578.       }
  579.  
  580.       if (!this.haveRegistered && var2 != null) {
  581.          ToolTipManager.sharedInstance().registerComponent(this);
  582.          this.haveRegistered = true;
  583.       }
  584.  
  585.    }
  586.  
  587.    public void setBackgroundAt(int var1, Color var2) {
  588.       Color var3 = ((Page)this.pages.elementAt(var1)).background;
  589.       ((Page)this.pages.elementAt(var1)).setBackground(var2);
  590.       if (var2 == null || var3 == null || !var2.equals(var3)) {
  591.          Rectangle var4 = this.getBoundsAt(var1);
  592.          if (var4 != null) {
  593.             this.repaint(var4);
  594.          }
  595.       }
  596.  
  597.    }
  598.  
  599.    public void setForegroundAt(int var1, Color var2) {
  600.       Color var3 = ((Page)this.pages.elementAt(var1)).foreground;
  601.       ((Page)this.pages.elementAt(var1)).setForeground(var2);
  602.       if (var2 == null || var3 == null || !var2.equals(var3)) {
  603.          Rectangle var4 = this.getBoundsAt(var1);
  604.          if (var4 != null) {
  605.             this.repaint(var4);
  606.          }
  607.       }
  608.  
  609.    }
  610.  
  611.    public void setEnabledAt(int var1, boolean var2) {
  612.       boolean var3 = ((Page)this.pages.elementAt(var1)).isEnabled();
  613.       ((Page)this.pages.elementAt(var1)).setEnabled(var2);
  614.       if (var2 != var3) {
  615.          this.revalidate();
  616.          this.repaint();
  617.       }
  618.  
  619.    }
  620.  
  621.    public void setComponentAt(int var1, Component var2) {
  622.       Page var3 = (Page)this.pages.elementAt(var1);
  623.       if (var2 != var3.component) {
  624.          boolean var4 = false;
  625.          if (var3.component != null) {
  626.             var4 = SwingUtilities.findFocusOwner(var3.component) != null;
  627.             synchronized(this.getTreeLock()) {
  628.                int var6 = this.getComponentCount();
  629.                Component[] var7 = this.getComponents();
  630.  
  631.                for(int var8 = 0; var8 < var6; ++var8) {
  632.                   if (var7[var8] == var3.component) {
  633.                      super.remove(var8);
  634.                   }
  635.                }
  636.             }
  637.          }
  638.  
  639.          var3.component = var2;
  640.          boolean var5 = this.getSelectedIndex() == var1;
  641.          if (var5) {
  642.             this.visComp = var2;
  643.          }
  644.  
  645.          if (var2 != null) {
  646.             var2.setVisible(var5);
  647.             this.addImpl(var2, (Object)null, -1);
  648.             if (var4) {
  649.                SwingUtilities2.tabbedPaneChangeFocusTo(var2);
  650.             }
  651.          } else {
  652.             this.repaint();
  653.          }
  654.  
  655.          this.revalidate();
  656.       }
  657.  
  658.    }
  659.  
  660.    public void setDisplayedMnemonicIndexAt(int var1, int var2) {
  661.       this.checkIndex(var1);
  662.       Page var3 = (Page)this.pages.elementAt(var1);
  663.       var3.setDisplayedMnemonicIndex(var2);
  664.    }
  665.  
  666.    public void setMnemonicAt(int var1, int var2) {
  667.       this.checkIndex(var1);
  668.       Page var3 = (Page)this.pages.elementAt(var1);
  669.       var3.setMnemonic(var2);
  670.       this.firePropertyChange("mnemonicAt", (Object)null, (Object)null);
  671.    }
  672.  
  673.    public int indexOfTab(String var1) {
  674.       for(int var2 = 0; var2 < this.getTabCount(); ++var2) {
  675.          if (this.getTitleAt(var2).equals(var1 == null ? "" : var1)) {
  676.             return var2;
  677.          }
  678.       }
  679.  
  680.       return -1;
  681.    }
  682.  
  683.    public int indexOfTab(Icon var1) {
  684.       for(int var2 = 0; var2 < this.getTabCount(); ++var2) {
  685.          Icon var3 = this.getIconAt(var2);
  686.          if (var3 != null && var3.equals(var1) || var3 == null && var3 == var1) {
  687.             return var2;
  688.          }
  689.       }
  690.  
  691.       return -1;
  692.    }
  693.  
  694.    public int indexOfComponent(Component var1) {
  695.       for(int var2 = 0; var2 < this.getTabCount(); ++var2) {
  696.          Component var3 = this.getComponentAt(var2);
  697.          if (var3 != null && var3.equals(var1) || var3 == null && var3 == var1) {
  698.             return var2;
  699.          }
  700.       }
  701.  
  702.       return -1;
  703.    }
  704.  
  705.    public int indexAtLocation(int var1, int var2) {
  706.       return this.ui != null ? ((TabbedPaneUI)this.ui).tabForCoordinate(this, var1, var2) : -1;
  707.    }
  708.  
  709.    public String getToolTipText(MouseEvent var1) {
  710.       if (this.ui != null) {
  711.          int var2 = ((TabbedPaneUI)this.ui).tabForCoordinate(this, var1.getX(), var1.getY());
  712.          if (var2 != -1) {
  713.             return ((Page)this.pages.elementAt(var2)).tip;
  714.          }
  715.       }
  716.  
  717.       return super.getToolTipText(var1);
  718.    }
  719.  
  720.    private void checkIndex(int var1) {
  721.       if (var1 < 0 || var1 >= this.pages.size()) {
  722.          throw new IndexOutOfBoundsException("Index: " + var1 + ", Tab count: " + this.pages.size());
  723.       }
  724.    }
  725.  
  726.    private void writeObject(ObjectOutputStream var1) throws IOException {
  727.       var1.defaultWriteObject();
  728.       if (this.getUIClassID().equals("TabbedPaneUI")) {
  729.          byte var2 = JComponent.getWriteObjCounter(this);
  730.          --var2;
  731.          JComponent.setWriteObjCounter(this, var2);
  732.          if (var2 == 0 && this.ui != null) {
  733.             this.ui.installUI(this);
  734.          }
  735.       }
  736.  
  737.    }
  738.  
  739.    void compWriteObjectNotify() {
  740.       super.compWriteObjectNotify();
  741.       if (this.getToolTipText() == null && this.haveRegistered) {
  742.          ToolTipManager.sharedInstance().unregisterComponent(this);
  743.       }
  744.  
  745.    }
  746.  
  747.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  748.       var1.defaultReadObject();
  749.       if (this.ui != null && this.getUIClassID().equals("TabbedPaneUI")) {
  750.          this.ui.installUI(this);
  751.       }
  752.  
  753.       if (this.getToolTipText() == null && this.haveRegistered) {
  754.          ToolTipManager.sharedInstance().registerComponent(this);
  755.       }
  756.  
  757.    }
  758.  
  759.    protected String paramString() {
  760.       String var1;
  761.       if (this.tabPlacement == 1) {
  762.          var1 = "TOP";
  763.       } else if (this.tabPlacement == 3) {
  764.          var1 = "BOTTOM";
  765.       } else if (this.tabPlacement == 2) {
  766.          var1 = "LEFT";
  767.       } else if (this.tabPlacement == 4) {
  768.          var1 = "RIGHT";
  769.       } else {
  770.          var1 = "";
  771.       }
  772.  
  773.       String var2 = this.haveRegistered ? "true" : "false";
  774.       return super.paramString() + ",haveRegistered=" + var2 + ",tabPlacement=" + var1;
  775.    }
  776.  
  777.    public AccessibleContext getAccessibleContext() {
  778.       if (this.accessibleContext == null) {
  779.          this.accessibleContext = new AccessibleJTabbedPane(this);
  780.          int var1 = this.getTabCount();
  781.  
  782.          for(int var2 = 0; var2 < var1; ++var2) {
  783.             ((Page)this.pages.elementAt(var2)).initAccessibleContext();
  784.          }
  785.       }
  786.  
  787.       return this.accessibleContext;
  788.    }
  789.  
  790.    public void setTabComponentAt(int var1, Component var2) {
  791.       if (var2 != null && this.indexOfComponent(var2) != -1) {
  792.          throw new IllegalArgumentException("Component is already added to this JTabbedPane");
  793.       } else {
  794.          Component var3 = this.getTabComponentAt(var1);
  795.          if (var2 != var3) {
  796.             int var4 = this.indexOfTabComponent(var2);
  797.             if (var4 != -1) {
  798.                this.setTabComponentAt(var4, (Component)null);
  799.             }
  800.  
  801.             ((Page)this.pages.elementAt(var1)).tabComponent = var2;
  802.             this.firePropertyChange("indexForTabComponent", -1, var1);
  803.          }
  804.  
  805.       }
  806.    }
  807.  
  808.    public Component getTabComponentAt(int var1) {
  809.       return ((Page)this.pages.elementAt(var1)).tabComponent;
  810.    }
  811.  
  812.    public int indexOfTabComponent(Component var1) {
  813.       for(int var2 = 0; var2 < this.getTabCount(); ++var2) {
  814.          Component var3 = this.getTabComponentAt(var2);
  815.          if (var3 == var1) {
  816.             return var2;
  817.          }
  818.       }
  819.  
  820.       return -1;
  821.    }
  822.  
  823.    // $FF: synthetic method
  824.    static void access$000(JTabbedPane var0, String var1, Object var2, Object var3) {
  825.       var0.firePropertyChange(var1, var2, var3);
  826.    }
  827. }
  828.